// function + ajax + callback
// function + ajax + promise
// async、await

/**
 * function + ajax + promise
 * @param {string} url     请求地址
 * @param {string} params  请求参数
 */
// function get2(url, params)
function axios(url, params)
{
  return new Promise((resolve, reject) => {
      // 一、创建xhr对象
      const xhr = new XMLHttpRequest
      // 二、监听状态
      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4)
        {
          if (xhr.status == 200)
          {
            // 先 获取接口数据并且解析
            let res = JSON.parse(xhr.responseText)
            // 再逻辑处理
            resolve(res)
          } else {
            // alert(xhr.status)
            reject(xhr.status)
          }
        }
      }
      // 三、设置请求方式、请求地址
      // xhr.open('get', `请求地址?请求参数`, 是否异步默认true异步/false同步)
      xhr.open('get', `${url}?${params}`)
      // 四、发送请求
      xhr.send(null)
  })
}



function post(url, params)
{
  return new Promise((resolve, reject) => {
      // 一、创建xhr对象
      const xhr = new XMLHttpRequest
      // 二、监听状态
      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4)
        {
          if (xhr.status == 200)
          {
            // 先 获取接口数据并且解析
            let res = JSON.parse(xhr.responseText)
            // 再逻辑处理
            resolve(res)
          } else {
            // alert(xhr.status)
            reject(xhr.status)
          }
        }
      }
      // 三、设置请求方式、请求地址
      // xhr.open('post', `请求地址?请求参数`, 是否异步默认true异步/false同步)
      xhr.open('post', `${url}`)
      xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
      // 四、发送请求
      xhr.send(params)
  })
}

/**
 * function + ajax + callback
 * @param {string}   url        请求地址
 * @param {string}   params     请求参数
 * @param {function} callback   回调函数实现不同逻辑代码处理
 * @return undefined
 */
function get1(url, params, callback)
{
  // 一、创建xhr对象
  const xhr = new XMLHttpRequest
  // 二、监听状态
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4)
    {
      if (xhr.status == 200)
      {
        // 先 获取接口数据并且解析
        let res = JSON.parse(xhr.responseText)
        // 再逻辑处理
        callback(res)
      } else {
        alert(xhr.status)
      }
    }
  }
  // 三、设置请求方式、请求地址
  // xhr.open('get', `请求地址?请求参数`, 是否异步默认true异步/false同步)
  xhr.open('get', `${url}?${params}`)
  // 四、发送请求
  xhr.send(null)
}